home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved.
- *
- * (b) If this Sample Code is distributed as part of the Display PostScript
- * System Software Development Kit from Adobe Systems Incorporated,
- * then this copy is designated as Development Software and its use is
- * subject to the terms of the License Agreement attached to such Kit.
- *
- * (c) If this Sample Code is distributed independently, then the following
- * terms apply:
- *
- * (d) This file may be freely copied and redistributed as long as:
- * 1) Parts (a), (d), (e) and (f) continue to be included in the file,
- * 2) If the file has been modified in any way, a notice of such
- * modification is conspicuously indicated.
- *
- * (e) PostScript, Display PostScript, and Adobe are registered trademarks of
- * Adobe Systems Incorporated.
- *
- * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
- * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
- * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
- * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
- * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
- * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
- * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
- * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS.
- */
-
- /*
- * ImportPanel.m
- *
- * Necessary because of the difficulty of obtaining a copy
- * of the OpenPanel. This subclass of panel uses the OpenPanel
- * panel and switches the panel from an OpenPanel to an ImportPanel.
- * The panel is switched back when needed. Not recommended but
- * seemingly the only way.
- *
- */
-
- #import "ImportPanel.h"
-
- #import <appkit/Button.h>
- #import <appkit/Matrix.h>
- #import <appkit/TextField.h>
- #import <appkit/View.h>
- #import <appkit/nextstd.h>
-
- #import <objc/hashtable.h>
- #import <objc/List.h>
- #import <objc/Object.h>
- #import <strings.h>
-
- @implementation ImportPanel
-
- /*
- * Assign the accessory id to the ImportPanel instance variable.
- * Find the matrix of buttons in the accessory view and the open
- * title text. These ids will be used at later times.
- */
- - setImportAccessory:anObject
- {
- int i, j;
-
- id subviewlist, subview;
-
- /* Search for the button matrix in the accessory view. */
- accessoryId = anObject;
- subviewlist = [[[accessoryId subviews] objectAt:0] subviews];
- j = [subviewlist count];
- for (i = 0; i < j; i++)
- {
- subview = [subviewlist objectAt:i];
- if ([subview isKindOf:[Matrix class]])
- {
- buttonsId = subview;
- if (switchId)
- break;
- }
- else if ([subview isKindOf:[Button class]])
- {
- switchId = subview;
- if (buttonsId)
- break;
- }
- }
-
- /*
- * Search for the title textfield in the panel. (Not a recommended
- * approach but one of the only ways to get at the title.)
- */
- subviewlist = [contentView subviews];
- j = [subviewlist count];
- for (i = 0; i < j; i++)
- {
- subview = [subviewlist objectAt:i];
- if ([subview isKindOf:[TextField class]])
- {
- if (strcmp("Open", [subview stringValue]) == 0)
- {
- titleId = subview;
- break;
- }
- }
- }
-
- return self;
- }
-
- - setOpen
- {
- if (strcmp("Open", [titleId stringValue]) != 0)
- {
- [titleId setStringValue:"Open"];
- [titleId display];
-
- [self setAccessoryView:NULL];
- if (idirectory)
- NX_FREE(idirectory);
- idirectory = NXCopyStringBuffer(directory);
- [self allowMultipleFiles:YES];
- }
-
- return self;
- }
-
- - setImport
- {
- if (strcmp("Import", [titleId stringValue]) != 0)
- {
- [titleId setStringValue:"Import"];
- [titleId display];
-
- [self setAccessoryView:accessoryId];
- if (idirectory)
- [self setDirectory:idirectory];
- [self allowMultipleFiles:NO];
- }
-
- return self;
- }
-
- - setFormat:(int) aFormat
- {
- [buttonsId selectCellWithTag:aFormat];
-
- return self;
- }
-
- - (int) format
- {
- return [buttonsId selectedTag];
- }
-
- - (BOOL) dragToSize
- {
- return [switchId state];
- }
-
- @end
-